package com.delio.client.pagos.ingresos;

import java.util.List;

import com.delio.client.idioma.DelioConstants;
import com.delio.client.util.MensajeData;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class PagoIngresos {
	private static DelioConstants k = GWT.create(DelioConstants.class);
	private static PagoIngresoServiceAsync ms = GWT.create(PagoIngresoService.class);

	public static ListStore<BeanModel> store;
	public static ListLoader<ListLoadResult<BeanModel>> loader;
	private static  Integer ingreso_id;
	public static Integer contrato_id;
	public static Integer periodo;
	public static Integer tipoingreso_id;

	public static ListStore<BeanModel> store1;
	public static ListLoader<ListLoadResult<BeanModel>> loader1;
	
	public static void save(List<PagoIngreso> pr) {
	    
		ms.save(pr, new AsyncCallback<MensajeData>() {

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado) {
				 

				} else {
					MessageBox.alert(k.sistemaDelio(), k.ingresoNoRegistrado(),	null);
				}
			}

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);

			}
		});

	}
	
	
	public static void getPagoIngresos() {

		RpcProxy<List<PagoIngreso>> proxy = new RpcProxy<List<PagoIngreso>>() {

			@Override
			protected void load(Object loadConfig,
					AsyncCallback<List<PagoIngreso>> callback) {
				ms.getPagoIngresos(contrato_id,callback);
			}
		};

		loader = new BaseListLoader<ListLoadResult<BeanModel>>(proxy,
				new BeanModelReader());
		
		store = new ListStore<BeanModel>(loader);
		
	}
	
	
	public static void getIngresos() {

		RpcProxy<List<Ingreso>> proxy = new RpcProxy<List<Ingreso>>() {

			@Override
			protected void load(Object loadConfig,
					AsyncCallback<List<Ingreso>> callback) {
				ms.getIngresos(tipoingreso_id,callback);
			}
		};

		loader1 = new BaseListLoader<ListLoadResult<BeanModel>>(proxy,
				new BeanModelReader());
		
		store1 = new ListStore<BeanModel>(loader1);
		
	}
	
	
	
	public static void save(Ingreso in) {
		ingreso_id = in.getId();
		in.setTipoingreso_id(tipoingreso_id);
       	ms.save(in ,new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);
			}

			@Override
			public void onSuccess(MensajeData result) {

				if (result.guardado) {
					if (ingreso_id != null)
						store1.rejectChanges();
					else
						store1.commitChanges();
					
				}else
					MessageBox.alert(k.sistemaDelio(), k.ingresoNoGuardado(),null);

			}
		});

	}
	
	public static void delete(Integer id) {
		ms.delete(id, new AsyncCallback<MensajeData>() {

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado) {
						loader1.load();
				} 
				else
					MessageBox.alert(k.sistemaDelio(), k.ingresoNoEliminado(),
							null);

			}

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);

			}
		});

	}
		
		
	}
	

